package com.bkgy.controller.allprocess.service.impl;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bkgy.controller.allprocess.dto.TbAllpricessIndexTableDto;
import com.bkgy.controller.allprocess.dto.TbAllpricessIndexTableDtoRequst;
import com.bkgy.controller.allprocess.dto.TbAllpricessIndexTableDtoResponse;
import com.bkgy.controller.allprocess.mapper.AllProcessIndexTableMapper;
import com.bkgy.controller.allprocess.service.AllProcessIndexTableService;
import com.bkgy.sys.common.entity.ResultData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

@Service

public class AllProcessIndexTableServiceImpl implements AllProcessIndexTableService {

    @Autowired
    private AllProcessIndexTableMapper allProcessindexTableMapper;

    /**
     * 全流程成材率模型首页 总成材率 右侧表格穿透
     *
     * @param Requst TbAllpricessIndexTableDtoRequst
     * @return ResultData<TbAllpricessIndexTableDto>
     */
    public ResultData<TbAllpricessIndexTableDtoResponse> allprocessIndexTable(TbAllpricessIndexTableDtoRequst Requst) {
        //日期转换与赋值
        Requst = setdatetime(Requst);

        try {
            Page<?> page = new Page<>(Requst.getPageIndex(), Requst.getPageSize());

            //总行数数
            int count = 0;
            List<TbAllpricessIndexTableDto> results = new ArrayList<TbAllpricessIndexTableDto>();
            TbAllpricessIndexTableDtoResponse resultss= new TbAllpricessIndexTableDtoResponse();

            if(Requst.getLinename() != null || !Requst.getLinename().equals("")) {
                if(Requst.getLinename().equals("all")) {
                    results=allProcessindexTableMapper.get_all(page, Requst);
                    resultss.setList_tbAllpricessIndexTableDto(results);
                }
                else if(Requst.getLinename().equals("cgl")) {
                    results=allProcessindexTableMapper.get_cgl(page, Requst);
                    resultss.setList_tbAllpricessIndexTableDto(results);
                }
                else if(Requst.getLinename().equals("cal")) {
                    results=allProcessindexTableMapper.get_cal(page, Requst);
                    resultss.setList_tbAllpricessIndexTableDto(results);
                }
                else if(Requst.getLinename().equals("cal2150")) {
                    results=allProcessindexTableMapper.get_cal2150(page, Requst);
                    resultss.setList_tbAllpricessIndexTableDto(results);
                }
                else if(Requst.getLinename().equals("cal1630")) {
                    results=allProcessindexTableMapper.get_cal1630(page, Requst);
                    resultss.setList_tbAllpricessIndexTableDto(results);
                }
                String begin = Requst.getDbegin().substring(5,7).toString();//取5-7的东西
                String end = Requst.getDend().substring(5,7).toString();
                String begin_end="";
                if(begin.equals(end))
                {
                    begin_end="冷轧产品"+begin+"月";
                }
                else{
                    begin_end="冷轧产品"+begin+"-"+end+"月";
                }
                BigDecimal realvalue = Requst.getTotalznyield();
                BigDecimal target = Requst.getTargetvalue();
                BigDecimal rate =realvalue.subtract(target);
                String rate_str = "";//高低说明
                if(rate.compareTo(BigDecimal.ZERO)<0) {
                    rate_str="低"+rate.abs()+"%，综合成材率指标有所降低";
                }
                else {
                    rate_str="高"+rate+"%，综合成材率指标呈不断提升趋势";
                }
                String str=begin_end+"份综合成材率"+realvalue.toString()+"%，公司下达目标为"+target.toString()+"%，对比冷轧工序引领目标"+rate_str.toString();
//                "冷轧产品1-6月份综合成材率94.30%，完成公司下达94.20%目标，对比冷轧工序引领目标94.40%低0.10%，综合成材率指标呈不断提升趋势"
                resultss.setDetails(str);
            }
            return ResultData.ResultDataSuccess(resultss, results.size());
        } catch (Exception e) {
            e.printStackTrace();
            return ResultData.ResultDataFaultSelf("获取失败" + e.getMessage(), null);
        }
    }

    /**
     * 转为YYYY-MM-DD
     *
     * @param Requst TbAllpricessIndexTableDtoRequst
     * @return TbAllpricessIndexTableDtoRequst
     */
    public TbAllpricessIndexTableDtoRequst setdatetime(TbAllpricessIndexTableDtoRequst Requst) {
        try {
            if (Requst.getDbegin() != null && Requst.getDbegin() != "") {
                Requst.setDbegin(Requst.getDbegin().substring(0, 10));
            } else {
                Requst.setDbegin("2025-10-01");
            }

            if (Requst.getDend() != null && Requst.getDend() != "") {
                Requst.setDend(Requst.getDend().substring(0, 10));
            } else {
                Requst.setDend("2025-10-01");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return Requst;
    }

}
